﻿using System;
using System.Web.UI.WebControls;
using PortalCurriculo.Domain;
using PortalCurriculo.WebUI.Helpers;
using PortalCurriculo.WebUI.UserControls;
using Email = PortalCurriculo.Domain.Email;

namespace PortalCurriculo.WebUI.Usuarios
{
    public partial class Cadastro : PageHelper
    {
        private static string password;
        private CadastroPessoa.TipoPessoa TipoPessoa { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            string tipo = Request.QueryString.Get("Tipo");

            TipoPessoa = tipo != null && tipo.ToUpper().Equals("J")
                             ? CadastroPessoa.TipoPessoa.PessoaJuridica
                             : CadastroPessoa.TipoPessoa.PessoaFisica;

            Pessoa.Pessoa = TipoPessoa;

            TraduzirWizard(wrdUsuario);
        }

        protected void cmvAceitoTermoServico_ServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = (chkAceitoTermoServico.Checked);
        }

        protected void CustomValidatorEmail_ServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = !new Pessoa().UsuarioCadastrado(txtEmail.Text);
        }

        protected void wrdUsuario_FinishButtonClick(object sender, WizardNavigationEventArgs e)
        {
            Pessoa pessoa = Pessoa.CriarEntidade(txtEmail.Text);
            var usuario = new Usuario {Pessoa = pessoa, Senha = password};

            usuario.Salvar();

            new Email().EnviarEmailEvento(pessoa, pessoa.PessoaFisica == null
                                                      ? TipoEmail.Evento.InclusaoUsuarioPessoaJuridica
                                                      : TipoEmail.Evento.InclusaoUsuarioPessoaFisica);
        }

        protected void wrdUsuario_NextButtonClick(object sender, WizardNavigationEventArgs e)
        {
            if (!string.IsNullOrEmpty(txtSenha.Text))
                password = txtSenha.Text;
        }

        protected void wrdUsuario_ActiveStepChanged(object sender, EventArgs e)
        {
            if (wrdUsuario.ActiveStepIndex != 0) return;

            switch (Pessoa.Pessoa)
            {
                case CadastroPessoa.TipoPessoa.PessoaFisica:
                    Pessoa.txtNome.Focus();
                    break;
                case CadastroPessoa.TipoPessoa.PessoaJuridica:
                    Pessoa.txtRazaoSocial.Focus();
                    break;
            }
        }
    }
}